package org.zetaframework.core.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.ArrayList;
import java.util.List;

/**
 * swagger配置参数
 *
 * @author gcc
 */
@ConfigurationProperties(prefix = SwaggerProperties.PREFIX)
public class SwaggerProperties {
    public static final String PREFIX = "zeta.swagger";

    /** 是否开启swagger */
    private Boolean enabled = true;

    /** 标题 */
    private String title = "在线文档";

    /** 自定义组名 */
    private String group = "default";

    /** 描述 */
    private String description = "";

    /** 版本 */
    private String version = "1.0";

    /** 作者信息 */
    private Contact contact = new Contact();

    /** 许可证  */
    private String license = "LICENSE";

    /** 许可证URL */
    private String licenseUrl = "https://mit-license.org/";

    /** 服务条款URL */
    private String termsOfServiceUrl = "javascript:;";

    /**
     * API服务器地址列表
     * <p>
     * 配置Swagger UI中可用的服务器地址，支持多个环境切换<br>
     * 格式示例：
     * application.yml
     * <pre>{@code
     * swagger:
     *   servers-item:
     *     - url: http://localhost:8080
     *       description: 网关环境
     *     - url: http://localhost:xxxx
     *       description: 本地环境
     * }</pre>
     */
    private List<Server> serversItem = new ArrayList<>();

    public static class Contact {
        /** 联系人 */
        private String name = "";
        /** 联系人url */
        private String url = "";
        /** 联系人email */
        private String email = "";

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }
    }

    public static class Server {
        /** url */
        private String url;
        /** 描述 */
        private String description;

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }
    }

    public Boolean getEnabled() {
        return enabled;
    }

    public void setEnabled(Boolean enabled) {
        this.enabled = enabled;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getGroup() {
        return group;
    }

    public void setGroup(String group) {
        this.group = group;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public Contact getContact() {
        return contact;
    }

    public void setContact(Contact contact) {
        this.contact = contact;
    }

    public String getLicense() {
        return license;
    }

    public void setLicense(String license) {
        this.license = license;
    }

    public String getLicenseUrl() {
        return licenseUrl;
    }

    public void setLicenseUrl(String licenseUrl) {
        this.licenseUrl = licenseUrl;
    }

    public String getTermsOfServiceUrl() {
        return termsOfServiceUrl;
    }

    public void setTermsOfServiceUrl(String termsOfServiceUrl) {
        this.termsOfServiceUrl = termsOfServiceUrl;
    }

    public List<Server> getServersItem() {
        return serversItem;
    }

    public void setServersItem(List<Server> serversItem) {
        this.serversItem = serversItem;
    }
}
